using TerritoryGame.Domain.Entities;
using TerritoryGame.Domain.ValueObjects;

namespace TerritoryGame.Domain.Repositories;

public interface IGameRepository
{
    Task<Game?> GetByIdAsync(GameId id);
    Task<Game?> GetByRoomCodeAsync(string roomCode);
    Task<IEnumerable<Game>> GetAllAsync();
    Task<Game> AddAsync(Game game);
    Task<Game> UpdateAsync(Game game);
    Task DeleteAsync(GameId id);
    Task<bool> ExistsAsync(GameId id);
    Task<bool> ExistsByRoomCodeAsync(string roomCode);
}
